/**
 * 所谓抽象工厂模式就是提供一个接口，用于创建相关或者依赖对象的家族，而不需要明确指定具体类。
 * 他允许客户端使用抽象的接口来创建一组相关的产品，而不需要关系实际产出的具体产品是什么。这样一来，客户就可以从具体的产品中被解耦。
 * 它的优点是隔离了具体类的生成，使得客户端不需要知道什么被创建了，而缺点就在于新增新的行为会比较麻烦，因为当添加一个新的产品对象时，需要更加需要更改接口及其下所有子类。
 *
 * tip：需要横向和纵向上的抽取，横向抽取产品族，例如A/B属于一个族的产品，放置在一起公用一个工厂体系，
 * 若这个族产生迭代，就一起迭代，这是纵向的抽取，纵向的每一层将都会建立一个工厂，作为这个代的工厂，工厂生成还是这个代中所有的族
 *
 * 优点能够解耦
 * 缺点扩展性较差
 */
package b_abstractfactory;